home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 081 / opus100b.arc / XLATV281.ARC / XLATLIST.DOC < prev    next >
Text File  |  1987-05-29  |  53KB  |  1,441 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8.  
  9.  
  10.  
  11.  
  12.  
  13.  
  14.  
  15.  
  16.  
  17.  
  18.  
  19.  
  20.  
  21.  
  22.  
  23.  
  24.  
  25.  
  26.                               XlatList and RouteGen
  27.  
  28.                                   User's Manual
  29.  
  30.  
  31.  
  32.  
  33.  
  34.  
  35.  
  36.  
  37.  
  38.  
  39.  
  40.  
  41.  
  42.  
  43.  
  44.  
  45.  
  46.  
  47.  
  48.  
  49.  
  50.  
  51.  
  52.  
  53.  
  54.  
  55.  
  56.  
  57.  
  58.  
  59.      (C) COPYRIGHT 1985,86,87 by System Enhancement Associates, Inc.
  60.          ALL RIGHTS RESERVED
  61.                                 TABLE OF CONTENTS
  62.  
  63.  
  64.      _______                                                           ____     Section                                                           Page
  65.  
  66.      Introduction  ....................................................   1
  67.      License  .........................................................   1
  68.      Disclaimer  ......................................................   1
  69.      XlatList  ........................................................   2
  70.      XlatList control file  ...........................................   3
  71.         Your own network address  .....................................   3
  72.         Country  ......................................................   3
  73.         Mode of operation  ............................................   3
  74.         User directory  ...............................................   3
  75.         Forcing user directory entries  ...............................   4
  76.         Node list report  .............................................   4
  77.         Node list report index  .......................................   5
  78.         Summary report  ...............................................   5
  79.         Comments report  ..............................................   5
  80.         Dashes in phone numbers  ......................................   5
  81.         Routing data files  ...........................................   5
  82.         Processed node list  ..........................................   6
  83.         Maximum baud rate  ............................................   6
  84.         Private node lists  ...........................................   6
  85.         SEAdog node list prefixes  ....................................   6
  86.         Inserting phone numbers  ......................................   6
  87.         Inserting baud rates  .........................................   7
  88.         Telephone dialing instructions  ...............................   7
  89.         The cost table  ...............................................   8
  90.         Multiple input files  .........................................   9
  91.         Command line arguments  .......................................   9
  92.      Multiple zones  ..................................................   9
  93.      RouteGen  ........................................................  10
  94.      Lists of nodes  ..................................................  12
  95.      Predefined macros  ...............................................  12
  96.         By network or region  .........................................  12
  97.         By area code  .................................................  12
  98.         By country code  ..............................................  12
  99.         By node list flags  ...........................................  13
  100.         By routing hub  ...............................................  13
  101.         By a list in a file  ..........................................  13
  102.         By baud rate  .................................................  13
  103.         Everybody!  ...................................................  14
  104.         Except!  ......................................................  14
  105.      Special RouteGen control file statements  ........................  15
  106.         Your own network address  .....................................  15
  107.         Mode of operation  ............................................  15
  108.         Multiple output files  ........................................  15
  109.         Multiple input files  .........................................  15
  110.         Defining your own macros  .....................................  15
  111.         Defining BIG macros  ..........................................  16
  112.         Different schedules  ..........................................  16
  113.         Routing mail  .................................................  16
  114.         Conditionals  .................................................  17
  115.         Everything else  ..............................................  18
  116.      More on conditional statements  ..................................  19
  117.      A Sample routing control file  ...................................  20
  118.      Node list size limits  ...........................................  21
  119.  
  120.  
  121.                                   INTRODUCTION                                  INTRODUCTION
  122.  
  123.  
  124.      XlatList and RouteGen are utilities to assist system operators
  125.                                                              XlatList     (sysops) in making use of St. Louis format node lists.  XlatList is
  126.      used to translate a St. Louis format node list into useable form.
  127.      RouteGen     RouteGen is used in conjunction with XlatList to assist in the
  128.      creation of routing files.
  129.  
  130.      Each of these utilities is capable of functioning in either of two
  131.             SEAdog           Fido     modes: SEAdog mode, and Fido mode.  The differences will be described
  132.      where applicable.
  133.  
  134.  
  135.  
  136.                                      LICENSE                                     LICENSE
  137.  
  138.      XlatList and Routegen are the copyrighted property of System
  139.      Enhancement Associates, Inc.  You are granted a limited license to use
  140.      them, and to copy and distribute them, provided that the following
  141.      conditions are met:
  142.  
  143.       1) No fee may be charged for such copying and distribution.
  144.  
  145.       2) They may ONLY be distributed in their original, unmodified state.
  146.  
  147.                   ___      3) They may not be distributed, in whole or in part, as part of any
  148.          commercial product or service without the express written
  149.          permission of System Enhancement Associates, Inc.
  150.  
  151.       4) You accept full responsibility for whatever happens or fails to
  152.          happen.
  153.  
  154.  
  155.      Contributions for the use of these programs will be appreciated, and
  156.      should be sent to:
  157.  
  158.                        System Enhancement Associates, Inc.
  159.                           21 New Street, Wayne NJ 07470
  160.  
  161.      You may not use these products in a commercial environment or a
  162.      governmental organization without paying a license fee of $35.  Site
  163.      licenses are available.
  164.  
  165.  
  166.                                    DISCLAIMER                                   DISCLAIMER
  167.  
  168.      We accept no responsibility for anything at all.  You use these
  169.      programs at your own risk.  If they completely trash your system and
  170.      destroy a multimillion dollar database, then you have our sincerest
  171.      regrets, but you're on your own.
  172.  
  173.  
  174.  
  175.  
  176.  
  177.  
  178.  
  179.  
  180.      XlatList and RouteGen                                     Page 1
  181.                                     XLATLIST                                    XLATLIST
  182.  
  183.  
  184.      XlatList is a "predigester" for the St. Louis format node list which
  185.      turns it into a node list usable by SEAdog, Fido, or Opus.  It looks
  186.      on disk for a file of the name "NODELIST.nnn", where "nnn" is some
  187.      number.  If it finds more than one such file, then it picks the one
  188.      with the highest number.
  189.  
  190.      For example, if you have four files on disk named:
  191.  
  192.          NODELIST.312
  193.          NODELIST.319
  194.          NODELIST.326
  195.          NODELIST.BBS
  196.  
  197.      Then XlatList will read NODELIST.326, and ignore the others.  In fact,
  198.      you should be careful about this just after New Year's Day.  St. Louis
  199.      format node lists use the julian date for the extension, so XlatList
  200.      will almost always pick the proper one.  But at the start of the year
  201.      the numbering starts over at 001.  If you have any older node lists
  202.      lying around, XlatList will pick the oldest list from the previous
  203.      year, which probably isn't what you want.
  204.  
  205.      If you have one or more NODEDIFF.nnn files on your disk, then XlatList
  206.      will select the one with the highest number and attempt to apply it to
  207.      the selected nodelist, in hopes of making a new node list file to use.
  208.  
  209.      For example, if you have five files on disk named:
  210.  
  211.          NODELIST.312
  212.          NODELIST.319
  213.          NODEDIFF.319
  214.          NODEDIFF.326
  215.          NODELIST.BBS
  216.  
  217.      Then XlatList will try to apply the changes in NODEDIFF.326 against
  218.      the data in NODELIST.319 in an attempt to create NODELIST.326.  If it
  219.      succeeds, it will scan the newly created NODELIST.326.  Otherwise, it
  220.      will scan NODELIST.319.
  221.  
  222.      If the difference file includes a CRC check (given as a decimal number
  223.      following a colon on the first line), then XlatList will compute a CRC
  224.      value for the created node list and compare it with the CRC value
  225.      given in the difference file.  If they differ, then it will print an
  226.      error message, and insert warnings at the end of the node list reports
  227.      and at the beginning of the created NODELIST.BBS file (if any).
  228.  
  229.  
  230.      XlatList is controlled primarily by its own control file, which is
  231.      named "XLATLIST.CTL".  This file is free-format text, and can be
  232.      created with any normal text editor (such as EDLIN).  A semicolon
  233.      anywhere in the file marks the start of a comment, and everything from
  234.      the semicolon to the end of the line is ignored.
  235.  
  236.  
  237.  
  238.  
  239.  
  240.      SEAdog                    Page 2                        XlatList
  241.                  ___     XlatList is not case sensitive.  Anything in its control file or in
  242.      the node list or any of its arguments may be given in either uppercase
  243.      or lowercase or a combination of the two.
  244.  
  245.      Following is a description of the possible statements that you can put
  246.      in a XlatList control file:
  247.  
  248.  
  249.      NODE <zone>:<net>/<node>     NODE <zone>:<net>/<node>
  250.  
  251.          This tells XlatList what your network address is.  This is
  252.          especially required if your node list contains multiple zones, as
  253.          XlatList will need to know what zone you are in.  This is also
  254.          used to determine the default network number for use elsewhere.
  255.  
  256.  
  257.      COUNTRY <n>     COUNTRY <n>
  258.  
  259.          This tells XlatList what country you are in.  The cost table and
  260.          the dialing table (see below) each have defaults for domestic and
  261.          international calls.  An international call is defined as one
  262.          where the country code is different than your own.  This defines
  263.          what your own country code is.  The default is "1" (United States)
  264.  
  265.  
  266.      FIDO     FIDO
  267.      SEADOG     SEADOG
  268.  
  269.          These tell XlatList who it is generating the node list for.  The
  270.          default is SEADOG.  If you are using XlatList to generate a node
  271.          list for a Fido BBS system, then your XLATLIST.CTL file should
  272.          contain a FIDO statement.
  273.  
  274.          The two modes differ principally in the use of node list prefixes,
  275.          such as IGATE, OGATE, and HUB.  Any prefixes defined in the
  276.          XlatList control file are ignored in Fido mode.  HUB prefixes
  277.          present in the St. Louis node list are preserved in SEAdog mode,
  278.          but stripped off in Fido mode.  Additionally, when in Fido mode
  279.          hubs in nets other than your own (as given by the NODE statement)
  280.          are removed from the generated node list.
  281.  
  282.  
  283.      USERLIST     USERLIST
  284.      INTERLIST     INTERLIST
  285.      NOUSERLIST     NOUSERLIST
  286.  
  287.          These tell XlatList whether or not it should generate a directory
  288.          of the users (sysops) listed in the node list.  USERLIST says to
  289.          generate a directory of users in your own zone.  INTERLIST says to
  290.          generate a directory of all users in all zones.  NOUSERLIST says
  291.          not to generate a directory, and is the default.  The directory,
  292.          if any,  will be placed in a file called FIDOUSER.LST, and will be
  293.          in a format suitable for use as a SEAdog user directory.
  294.  
  295.  
  296.  
  297.  
  298.  
  299.  
  300.      SEAdog                    Page 3                        XlatList
  301.          Since a given node list may contain duplicate entries, XlatList
  302.          will try to resolve the duplicates in an intelligent fashion.  The
  303.          exact method used by XlatList is somewhat complicated, but in
  304.          general for any given name XlatList will try to:
  305.  
  306.          o    Avoid listing an address that is marked DOWN or HOLD.
  307.  
  308.          o    Avoid listing an address in another zone.
  309.  
  310.          o    Give preference to an address in a network as opposed to an
  311.               address in a region.
  312.  
  313.          o    Avoid listing someone in their role as a host or hub.
  314.  
  315.          o    Choose a higher baud rate over a lower one.
  316.  
  317.          o    Give preference to an address that has continuous mail or
  318.               extended protocol, while trying to avoid an address that is
  319.               mail only.
  320.  
  321.          o    All else being equal, select the lower node number.
  322.  
  323.          Based on some or all of the above criteria, and possibly on other
  324.          criteria as well, XlatList will attempt to select the most
  325.          suitable address to list for every name in the node list.
  326.  
  327.          You must have a copy of Ben Baker's QSORT program for the USERLIST
  328.          or INTERLIST option to work.
  329.  
  330.  
  331.      ADDR <address> <name>     ADDR <address> <name>
  332.  
  333.          This statement is used to insert additional entries into the user
  334.          directory, or to force XlatList to select a given address instead
  335.          of what it would pick on its own.  Any sort of address may be
  336.          specified, including extended addresses.  Some examples are:
  337.  
  338.          addr 1/0 Ben Baker
  339.          addr 107/6.1 Thom Henderson
  340.          addr 132/101!ncoast!lovell Dale Lovell
  341.  
  342.  
  343.      FIDOPRN     FIDOPRN
  344.      FIDOTXT     FIDOTXT
  345.      NOFIDOLIST     NOFIDOLIST
  346.  
  347.          These tell XlatList whether or not it should generate a human
  348.          readable report on what nodes are in your node list.  FIDOPRN says
  349.          to generate a full 132 column report, which is placed in a file
  350.          named NODELIST.PRN.  FIDOTXT says to create an abbreviated 80
  351.          column report, which is placed in a file named NODELIST.TXT.
  352.          NOFIDOLIST says not to generate any report at all, and is the
  353.          default.
  354.  
  355.          Both the FIDOPRN and FIDOTXT statements may be given, in which
  356.          case both reports are created.
  357.  
  358.  
  359.  
  360.      SEAdog                    Page 4                        XlatList
  361.      INDEX     INDEX
  362.      SINDEX     SINDEX
  363.      NOINDEX     NOINDEX
  364.  
  365.          These tell XlatList whether or not it should add an index to the
  366.          end of the Fido listing.  Each line of the index identifies one
  367.          net or region, and shows which page it is on.  INDEX says to
  368.          create the index in the order that the nets and regions were
  369.          scanned.  SINDEX says to sort the index by network number.
  370.          NOINDEX says not to generate the index at all, and is the default.
  371.  
  372.          You must have a copy of Ben Baker's QSORT program in order for the
  373.          SINDEX option to work properly.
  374.  
  375.  
  376.      REPORT     REPORT
  377.      NOREPORT     NOREPORT
  378.  
  379.          These tell XlatList whether or not it should print its report
  380.          about how many nets, nodes, and so forth it scanned.  NOREPORT
  381.          says not to print the report.  REPORT says to print it, and is the
  382.          default.
  383.  
  384.          The report is printed at the end of the scan, when XlatList
  385.          finshes scanning all node lists.  The report can be redirected to
  386.          a file or to the printer.
  387.  
  388.  
  389.      COMMENTS     COMMENTS
  390.      NOCOMMENTS     NOCOMMENTS
  391.  
  392.          These tell XlatList wether or not to display comments from the
  393.          node list while compiling it.  COMMENTS says to display them.
  394.          NOCOMMENTS says not to, and is the default.  All comments marked
  395.          _  _  _  _     _         A, F, S, U, or ; are included.  The comments may be redirected to
  396.          the printer or to a file, along with the summary table printed by
  397.          XlatList at the end of the run.
  398.  
  399.  
  400.      DASH     DASH
  401.      NODASH     NODASH
  402.  
  403.          These tell XlatList whether or not you want dashes stripped from
  404.          the phone numbers in your NODELIST.BBS file.  In some special
  405.          cases the sequence of digits being dialed exceeds the forty
  406.          character limit of Hayes-type modems.  Stripping out the dashes
  407.          shortens the number that must be dialed.  NODASH says to strip out
  408.          the dashes.  DASH says to leave them in place, and is the default.
  409.  
  410.  
  411.      ROUTE     ROUTE
  412.      NOROUTE     NOROUTE
  413.  
  414.          These tell XlatList whether or not to create temporary data files
  415.          for use by RouteGen.  ROUTE says to create the files.  NOROUTE
  416.          says not to, and is the default.  At present, the only temporary
  417.          file created is NODELIST.FON.
  418.  
  419.  
  420.      SEAdog                    Page 5                        XlatList
  421.      NODELIST     NODELIST
  422.      NONODELIST     NONODELIST
  423.  
  424.          These tell XlatList wether or not to create a NODELIST.BBS file.
  425.          NODELIST says to create it, and is the default.  NONODELIST says
  426.          not to create it.
  427.  
  428.  
  429.      MAXBAUD <baud>     MAXBAUD <baud>
  430.  
  431.          This tells XlatList the maximum baud rate to allow in the node
  432.          list.  Any listed baud rate higher than <baud> will be set equal
  433.          to <baud> in the NODELIST.BBS file.  SEAdog users do not need this
  434.          statement.
  435.  
  436.  
  437.      MYLIST <filename> ...     MYLIST <filename> ...
  438.      PVTLIST <filename> ...     PVTLIST <filename> ...
  439.  
  440.          These tell XlatList the names of one or more St. Louis format node
  441.          lists to be read in addition to (and after) the main node list.
  442.          You would use these to add a private net to the main node list.
  443.          You may have as many MYLIST and PVTLIST statements in your control
  444.          file as you like, and they will be read in the order you give
  445.          them.  They differ in that lists named in a MYLIST statement are
  446.          included in the reports created by the FIDOPRN and FIDOTXT
  447.          statements, while lists named in a PVTLIST statement are not.
  448.  
  449.  
  450.      IGATE [<net>/]<node> ...     IGATE [<net>/]<node> ...
  451.      OGATE [<net>/]<node> ...     OGATE [<net>/]<node> ...
  452.      GATE [<net>/]<node> ...     GATE [<net>/]<node> ...
  453.      HUB [<net>/]<node> ...     HUB [<net>/]<node> ...
  454.  
  455.          These are used to place SEAdog node list prefixes in a St. Louis
  456.          format node list.  Fido users will have no need of them.  These
  457.          have no effect in Fido mode.  SEAdog users should, at a minimum,
  458.          include an OGATE statement for their outbound host, if any.
  459.  
  460.  
  461.      PHONE [<net>/]<node> <number>     PHONE [<net>/]<node> <number>
  462.  
  463.          This is used to insert a phone number into the node list in place
  464.          of one that is already there.  For example, if the phone number
  465.          given in the list for node 107/8 was "-Unpublished-", and you
  466.          wanted to replace it with "1-201-472-8065", then you would say:
  467.  
  468.               PHONE 107/8 1-201-472-8065
  469.  
  470.          If you do not specify a net number, then your own net (as defined
  471.          in the NODE statement) is used.  You may have as many PHONE
  472.          statements as you like.
  473.  
  474.          You should always give phone numbers in their full form (as above)
  475.          in order for other statements (such as DIAL) to work properly.
  476.  
  477.  
  478.  
  479.  
  480.      SEAdog                    Page 6                        XlatList
  481.      BAUD [<net>/]<node> <baud>     BAUD [<net>/]<node> <baud>
  482.  
  483.          This is used to insert a baud rate into the node list in place of
  484.          one that is already there.  For example, if node 107/8 was listed
  485.          as being 1200 baud, but you wanted to send to him at 300 baud,
  486.          then you would say:
  487.  
  488.               BAUD 107/8 300
  489.  
  490.          If you do not specify a net number, then your own net (as defined
  491.          in the NODE statement) is used.  You may have as many BAUD
  492.          statements as you like.
  493.  
  494.  
  495.      DIAL [<domestic> [<international>]]     DIAL [<domestic> [<international>]]
  496.  
  497.          The DIAL statement marks the beginning of the dialing table.  It
  498.          can also take up to two optional arguments.  The first argument is
  499.          the default text to add to the phone number for all domestic
  500.          calls, while the second is the default for international calls.
  501.  
  502.          Each entry in the dialing table consists of a partial phone number
  503.          followed by a replacement string.  The partial phone number is
  504.          used to determine which replacements belong to which phone
  505.          numbers.  The table is scanned in sequence until an entry is found
  506.          which matches the corresponding portion of the original phone
  507.          number.  If no table entries match the original phone number, then
  508.          the appropriate default is used.  This should be clearer in a
  509.          moment.
  510.  
  511.          The replacement string can take any of the following forms:
  512.  
  513.               <prefix>
  514.               <prefix>/<suffix>
  515.               /<suffix>
  516.               /
  517.  
  518.          The <prefix> is added to the beginning of the phone number, and
  519.          the <suffix> is added to the end.
  520.  
  521.          When a default string is applied, this is all that happens.
  522.          However, when a table entry is applied, the initial part of the
  523.          phone number which matched the table is first stripped off.
  524.  
  525.          Here is an example of a dialing table:
  526.  
  527.               DIAL /-123 011-
  528.                    1-201-472-     8-   ;In house
  529.                    1-201-         /    ;New Jersey
  530.               END
  531.  
  532.          This table would cause the following translations:
  533.  
  534.          1)   1-201-694-3348 would become 694-3348.  Since it matches the
  535.               "1-201-" entry, the initial "1-201-" gets stripped off.  It's
  536.               replacement string is specifying no prefix and no suffix.
  537.  
  538.  
  539.  
  540.      SEAdog                    Page 7                        XlatList
  541.          2)   1-201-472-8065 would become 8-8065.  As before, the matching
  542.               digits are stripped off, but this time the replacement string
  543.               is specifying a new prefix of "8-".  Note that if the 1-201-
  544.               entry had come first, it would have been applied instead.
  545.  
  546.          3)   1-212-288-9076 does not match any table entry, so the default
  547.               domestic string is used, and it becomes 1-212-288-9076-123.
  548.               Since no table entry was used, no digits are stripped off.
  549.  
  550.          4)   31-8380-37156 also does not match any table entries, but this
  551.               number is in another country, so the international default is
  552.               used, and it becomes 011-31-8380-37156.
  553.  
  554.          One last example.  If you were in area code 201 and needed to dial
  555.          a "9" for long distance instead of a "1", here is how you would do
  556.          it:
  557.  
  558.               DIAL
  559.                    1-201-              ;Strip area code off local calls
  560.                    1-        9-        ;Prefix all else with a nine
  561.               END
  562.  
  563.  
  564.          SEAdog users may wish to use the equivalent DIAL statement in
  565.          their CONFIG.DOG file instead.  If the dialing table is used, then
  566.                                                                     ___         the DIAL statement in the SEAdog configuration file should not be
  567.          used, and vice versa.
  568.  
  569.  
  570.      COST [<domestic> [<international>]]     COST [<domestic> [<international>]]
  571.  
  572.          This statement marks the beginning of the cost table.  A series of
  573.          entries follows this statement, ending with an END statement.  Up
  574.          to two optional arguments may be supplied with the COST statement.
  575.          The first argument is the default cost per message for domestic
  576.          calls, and the second is the default cost per message for
  577.          international calls.  All costs are given in pennies.
  578.  
  579.          Each entry in the cost table consists of a partial phone number
  580.          followed by a cost per message in pennies for calling that number,
  581.          optionally followed by a maximum baud rate to use.  The partial
  582.          phone numbers are given in the same format as in the dialing
  583.          table, and are scanned the same way.
  584.  
  585.          Here's an example of a typical COST table:
  586.  
  587.               cost 22 300
  588.                   1-201-542- 20        ;Eatontown
  589.                   1-201-750- 13        ;Woodbridge
  590.                   1-201-963- 07   300  ;Jersey City
  591.  
  592.                   1-203-     20        ;Connecticut
  593.                   1-301-     20        ;Maryland
  594.                   1-503-     27        ;Oregon
  595.                   1-602-     26        ;Arizona
  596.                   1-703-     20        ;Virginia
  597.               end
  598.  
  599.  
  600.      SEAdog                    Page 8                        XlatList
  601.      INCLUDE <filename>     INCLUDE <filename>
  602.  
  603.          This causes XlatList to read commands from the named file.  When
  604.          the end of the named file is reached, XlatList will resume reading
  605.          the current file at the statement following the INCLUDE statement.
  606.  
  607.  
  608.  
  609.      Command Line Arguments     Command Line Arguments
  610.  
  611.      XlatList can be given any of the following arguments on the command
  612.      line when it is invoked:
  613.  
  614.          SEAdog         Produce SEAdog compatible output.
  615.          FIDO           Produce Fido compatible output.
  616.          COMments       Display node list comments.
  617.          NOComments     Don't display node list comments.
  618.          ROUte          Create the RouteGen data file.
  619.          NORoute        Don't create the RouteGen data file.
  620.          PRNlist        Create a 132 column Fido listing.
  621.          TXTlist        Create an 80 column Fido listing.
  622.          NOFidolist     Don't create a Fido listing.
  623.          INDex          Add an index to the Fido listing.
  624.          NOIndex        Don't add an index to the Fido listing.
  625.          NODelist       Create a NODELIST.BBS file.
  626.          NONodelist     Don't create a NODELIST.BBS file.
  627.          USErlist       Create a FIDOUSER.LST file for your zone.
  628.          INTerlist      Create a FIDOUSER.LST file for all zones.
  629.          NOUserlist     Don't create a FIDOUSER.LST file.
  630.  
  631.      Case is unimportant.  Use of capitals in this list indicates the
  632.      minimum abbreviation (ie. "IND" for "INDEX").
  633.  
  634.      Any of these options, when given, overrides the equivalent statement
  635.      in the control file.
  636.  
  637.  
  638.  
  639.  
  640.      Multiple zones     Multiple zones
  641.  
  642.      _____     Zones are a high-order division of the FidoNet node list.  Zones and
  643.      countries are not related.  A zone might contain several countries,
  644.      and a country might contain several zones.
  645.  
  646.      Each zone is in effect its own node list.  Mail traffic between the
  647.                               ____ ________     zones is provided by the zone gateways.  Each zone's gateways to the
  648.      other zones are listed near the beginning of the node list for that
  649.      zone.  This is not the place for an extended discussion of zones, zone
  650.      gateways, and zone addressing.
  651.  
  652.      When XlatList processes a node list containing multiple zones, the
  653.      NODELIST.BBS file it creates will contain only those nodes which are
  654.      in your own zone.  The user directory may include other zones or not,
  655.      as you wish.
  656.  
  657.  
  658.  
  659.  
  660.      SEAdog                    Page 9                        XlatList
  661.                                     ROUTEGEN                                    ROUTEGEN
  662.  
  663.  
  664.  
  665.      RouteGen is a dedicated macro processor for use in creating routing
  666.      files.  In general, it passes along whatever was present in the input
  667.      file, expanding any macros it finds along the way.
  668.  
  669.      In its normal mode of operation RouteGen reads routing commands from a
  670.      control file called ROUTEGEN.CTL and places its output in a route file
  671.      called ROUTE.DOG.  This can be altered in several ways:
  672.  
  673.       1) The /U command line switch (see below) can be used to change the
  674.          name of the input file.  In this case, the name of the output file
  675.          also changes to match that of the new input file, but with an
  676.          extension of ".DOG".
  677.  
  678.       2) If RouteGen is placed in Fido mode, then instead of creating just
  679.          one output file with an extension of ".DOG", RouteGen will create
  680.          a separate route file for each schedule.  The filename extension
  681.          on each route file will match the schedule tag for the schedule it
  682.          contains.
  683.  
  684.       3) The FILE statement (see below) can be used to change the name (but
  685.          not the extension) of the output file being created.  You can have
  686.          more than one FILE statement, allowing multiple sets of routing
  687.          files to be created in one operation.
  688.  
  689.  
  690.      RouteGen is invoked with a statement of the form:
  691.  
  692.          routegen [<address>] [/M] [/S] [/U<filename>]
  693.  
  694.      <address> is a network address, in either net/node format or
  695.      zone:net/node format.  RouteGen does not use the zone number, nor does
  696.      it create interzone routing files at this time.  The interzone address
  697.      format is included only for compatibility with other programs.
  698.  
  699.      If an address is specified on the command line, then that address is
  700.      used in the same way and for the same things as the NODE statement in
  701.      a RouteGen control file.  Note that a NODE statement overrides any
  702.      address that may be given on the command line.
  703.  
  704.      RouteGen also understands the following command line options:
  705.  
  706.          /U<filename>   This names an alternate control file to use instead
  707.                         of ROUTEGEN.CTL.  If no extension is given, then
  708.                         ".CTL" is assumed.  The output file created by
  709.                         RouteGen will have the same name as the alternate
  710.                         control file (but a different extension).
  711.  
  712.          /F             This tells RouteGen to operate in Fido mode, as
  713.                         opposed to its default SEAdog mode.  Note that a
  714.                         SEADOG statement in the control file overrides this
  715.                         option.
  716.  
  717.  
  718.  
  719.  
  720.      SEAdog                   Page 10                        RouteGen
  721.          /S             This tells RouteGen to operate in SEAdog mode,
  722.                         which is its default state anyway.  This option is
  723.                         included for completeness.
  724.  
  725.          /M             This causes RouteGen to display status information
  726.                         about its memory usage.  This can be useful for
  727.                         determining how a routing file got to be too
  728.                         complex.  See the section on advice and tips later
  729.                         in this manual.
  730.  
  731.          /T             This causes RouteGen to dump its symbol table at
  732.                         the end of the run.  We're not sure what good this
  733.                         would do you, but you might find it interesting.
  734.  
  735.      Option switches may be given in either uppercase or lowercase, and may
  736.      begin with either a slash or a dash.  They may also be bunched
  737.      together as long as the /U switch comes last.  For example, if you
  738.      wanted to run RouteGen on a control file named WASTE.CTL, and you
  739.      wanted to see memory usage and the symbol table, you could type:
  740.  
  741.          routegen -msuwaste
  742.  
  743.  
  744.  
  745.      RouteGen reads its control file line by line, and expects each line to
  746.      begin with a keyword followed by all of its arguments.  Keywords fall
  747.      into two classes, those which control RouteGen itself and those which
  748.      are routing instructions.  The RouteGen control statements will be
  749.      described later.  The routing instructions should be described in your
  750.      SEAdog or Fido manual.
  751.  
  752.      RouteGen considers any statement which it does not understand to be a
  753.      routing control statement.  In general RouteGen does not know any
  754.      routing commands.  It expects them all to be of the form:
  755.  
  756.          <verb> [<list>]
  757.  
  758.      That is, a single word command, possibly followed by a list of network
  759.      addresses.  There are five exceptions:
  760.  
  761.          Schedule <tag> [<list>]
  762.          Route-to <address> <list>
  763.          Redial <number>
  764.          Don't <command> <list>
  765.          Script <keyword> <list>
  766.  
  767.      These five routing commands, and no others, are known to RouteGen and
  768.      handled differently.  For any other routing command Routegen merely
  769.      translates the list of nodes (if any) and passes it through.
  770.  
  771.  
  772.  
  773.  
  774.  
  775.  
  776.  
  777.  
  778.  
  779.  
  780.      SEAdog                   Page 11                        RouteGen
  781.      A <list> consists of zero or more <address>es.  An <address> can be
  782.      any of the following:
  783.  
  784.          <net>/<node>        The address of any given node.
  785.  
  786.          <node>              The address of another node in your own
  787.                              network.
  788.  
  789.          <net>/<lo>:<hi>     A list of all nodes in the specified range.
  790.  
  791.          <lo>:<hi>           A list of all nodes in the specified range in
  792.                              your own network.
  793.  
  794.          <macro>             A macro defining some list of nodes.
  795.  
  796.  
  797.      Most of the power of RouteGen comes from the use of macros.  You can
  798.      define your own macros by use of the DEFINE and ALSO statements
  799.      (described later).  RouteGen also has many predefined macros built in.
  800.      They are as follows:
  801.  
  802.      NET-nnn     NET-nnn
  803.      REGION-nnn     REGION-nnn
  804.  
  805.          These are equivalent, and are replaced with all of the nodes in
  806.          the given net.
  807.  
  808.          Example:
  809.  
  810.               No-route net-103
  811.  
  812.  
  813.      AREA-aaa[-eee[:eee][,eee[:eee]...]     AREA-aaa[-eee[:eee][,eee[:eee]...]
  814.  
  815.          This is replaced with all of the nodes whose phone numbers begin
  816.          with "1-aaa-", or with "1-aaa-eee-" if an exchange is specified.
  817.          Multiple exchanges may be specified, and ranges of exchanges may
  818.          be given.
  819.  
  820.          Example:
  821.  
  822.               Send-to area-201
  823.               Hold area-201 except area-201-472:474,694,776:778
  824.  
  825.  
  826.      COUNTRY-c[-aaa[-eee[:eee][,eee[:eee]]]]     COUNTRY-c[-aaa[-eee[:eee][,eee[:eee]]]]
  827.  
  828.          This is replaced with all of the nodes whose phone numbers begin
  829.          with "c", or with "c-aaa-" if an area code is specified, or with
  830.          "c-aaa-eee-" if both an area code and an exchange are specified.
  831.          Note that "COUNTRY-1-201" is equivalent to "AREA-201".  Multiple
  832.          exchanges and ranges of exchanges may be specified as with the
  833.          AREA macro.
  834.  
  835.          Example:
  836.  
  837.               Hold country-51
  838.  
  839.  
  840.      SEAdog                   Page 12                        RouteGen
  841.      FLAG-<x>     FLAG-<x>
  842.      TAG-<x>     TAG-<x>
  843.  
  844.          These are equivalent, and are replaced with all of the nodes whose
  845.          node list entries contain the string <x>.  Neither case nor
  846.          position is important.  For example, "flag-XP" would be replaced
  847.          by a list of all nodes which contain the string "XP" anywhere in
  848.          their flags field.  The flags field is the rightmost column of the
  849.          wide Fido report produced by XlatList.
  850.  
  851.          Example:
  852.  
  853.               Send-to flag-#CM
  854.  
  855.      HUB-<node>     HUB-<node>
  856.      HUB-<net/node>     HUB-<net/node>
  857.  
  858.          This is replaced by all of the nodes whose hub (as specified in
  859.          the St. Louis format node list) is the named node.  The hub node
  860.          is included in the list.  If you do not specify a net, then your
  861.          own net is assumed.  For example, "hub-300" would be replaced by a
  862.          list of all nodes in your own net who have node 300 in your net as
  863.          their hub.
  864.  
  865.          Example:
  866.  
  867.               Forward-for hub-200
  868.  
  869.  
  870.      LIST-<filename>     LIST-<filename>
  871.  
  872.          This is replaced by all of the nodes referred to in the specified
  873.          file.  Any word in the file which "looks like" a network address
  874.          (two numbers separated by a slash) will be included in the list.
  875.          All other words are ignored.  This is specifically designed to
  876.          allow the use of "AREAS.BBS" in creating route files.
  877.  
  878.          Example:
  879.  
  880.               No-route list-AREAS.BBS
  881.  
  882.  
  883.      BAUD-<rate>     BAUD-<rate>
  884.  
  885.          This is replaced by a list of all nodes which are listed at the
  886.          given baud rate.  Only nodes whose listed baud rate in the node
  887.          list exactly matches the rate stated will be listed.  Nodes with
  888.          higher or lower baud rates will not be included.
  889.  
  890.          Example:
  891.  
  892.               Send-to baud-9600
  893.  
  894.  
  895.  
  896.  
  897.  
  898.  
  899.  
  900.      SEAdog                   Page 13                        RouteGen
  901.      ALL     ALL
  902.  
  903.          This is replaced with all of the nodes in the net.  If possible,
  904.          it will be abbreviated to the short form, "ALL".
  905.  
  906.          Example:
  907.  
  908.               Give-to all
  909.  
  910.  
  911.  
  912.      A <list> may contain the keywords EXCEPT and AND.  These are used as
  913.      follows:
  914.  
  915.          <list1> EXCEPT <list2>
  916.  
  917.      results in a list of all addresses given in <list1> which are not also
  918.      given in <list2>.
  919.  
  920.          <list1> AND <list2>
  921.  
  922.      results in a list of all addresses given in <list1> which are also
  923.      given in <list2>.
  924.  
  925.          <list1> AND <list2> AND <list3>
  926.  
  927.      results in a list of all addresses which are given in all three lists.
  928.  
  929.      EXCEPT and AND may be used together, in which case EXCEPT is evaluated
  930.      first.  For example:
  931.  
  932.          <list1> EXCEPT <list2> AND <list3>
  933.  
  934.      results in a list of all addresses given in both <list1> and <list3>,
  935.      but not in <list2>.
  936.  
  937.  
  938.                 ___     You should not use EXCEPT in conjunction with metanodes like OURNET,
  939.      HOSTS, and so forth (except for the ALL metanode, see above).
  940.      Metanodes are not translated by RouteGen, so saying something like:
  941.  
  942.          ournet except 107/3
  943.  
  944.      will not work as you might expect.  Use the equivalent macro in
  945.      RouteGen instead.
  946.  
  947.  
  948.  
  949.  
  950.  
  951.  
  952.  
  953.  
  954.  
  955.  
  956.  
  957.  
  958.  
  959.  
  960.      SEAdog                   Page 14                        RouteGen
  961.                                RouteGen Statements                               RouteGen Statements
  962.  
  963.  
  964.      Certain statements in the control file have special meaning to
  965.      RouteGen.  They are:
  966.  
  967.      NODE <net>/<node>     NODE <net>/<node>
  968.      NODE <zone>:<net>/<node>     NODE <zone>:<net>/<node>
  969.  
  970.          This tells RouteGen what your network address is.  If you use the
  971.          "IF NODE" conditional (see below), then you should be careful to
  972.          ensure that you have the correct address here.  Otherwise, it is
  973.          sufficient if the net number is correct.
  974.  
  975.          RouteGen makes no use of the zone number, nor can RouteGen create
  976.          interzone routing files.  The interzone format is provided solely
  977.          for compatibility with other programs.
  978.  
  979.  
  980.      SEADOG     SEADOG
  981.      FIDO     FIDO
  982.  
  983.          These tell RouteGen what mode to operate in.  FIDO says to tailor
  984.          the output to the needs of the Fido BBS system.  SEADOG says to
  985.          tailor it to the SEAdog Electronic Mail system, and is the
  986.          default.
  987.  
  988.  
  989.      FILE <name>     FILE <name>
  990.  
  991.          This tells RouteGen what name to use on future output files.  It
  992.          also causes the current output file to be closed.  In SEADOG mode
  993.          it causes the next output file to be opened immediately with an
  994.          extension of ".DOG".
  995.  
  996.  
  997.      INCLUDE <name>     INCLUDE <name>
  998.  
  999.          This tells RouteGen to read additional routing instructions from
  1000.          the named file.  If no extension is specified, ".CTL" is assumed.
  1001.          When the end of the named file is reached RouteGen will resume
  1002.          reading the current file at the statement after the INCLUDE
  1003.          statement.  The file being included may include additional files.
  1004.  
  1005.  
  1006.      DEFINE <name> <list>     DEFINE <name> <list>
  1007.  
  1008.          This is used to define your own macros, and is quite powerful.
  1009.          The <list> is translated immediately, and all future references to
  1010.          <name> will be replaced with the list.
  1011.  
  1012.          The entire definition must fit on one line, but you can define
  1013.          macros in terms of themselves and other macros, so the resulting
  1014.          list can be quite large indeed.  See also the ALSO command, below.
  1015.  
  1016.  
  1017.  
  1018.  
  1019.  
  1020.      SEAdog                   Page 15                        RouteGen
  1021.      ALSO <list>     ALSO <list>
  1022.  
  1023.          This is used to add to the definition of the previously defined
  1024.          macro, thus allowing macro definitions to span more than one line.
  1025.          For example:
  1026.  
  1027.               define big 107/100 107/200 107/300
  1028.               also 107/400 107/500
  1029.  
  1030.          The first statement defines a macro called BIG as meaning a list
  1031.          of the three given addresses.  The second line adds two more
  1032.          addresses to the definition of BIG, resulting in a macro called
  1033.          BIG that means a list of all five addresses.
  1034.  
  1035.          You may have as many ALSO statements as you like that memory
  1036.          constraints will allow.
  1037.  
  1038.  
  1039.      SCHEDULE <tag> [<list>]     SCHEDULE <tag> [<list>]
  1040.  
  1041.          In Fido mode this causes the current output file to be closed, and
  1042.          a new one opened with an extension of ".<tag>".  In SEAdog mode
  1043.          the current output file is kept.  Any macros in the <list> are
  1044.          expanded, and the resulting SCHEDULE statement is output.
  1045.  
  1046.  
  1047.      ROUTE-TO <node> <list>     ROUTE-TO <node> <list>
  1048.  
  1049.          If <node> is a macro, then it is expanded.  The result is checked
  1050.          to ensure that it refers to one (1) node, or else an error is
  1051.          signalled.  Any macros in <list> are expanded, and the resulting
  1052.          ROUTE-TO statement is output.  The list will always include the
  1053.          node that is the target of the ROUTE-TO, and will thus always be
  1054.          at least one entry in length.
  1055.  
  1056.          When operating in Fido mode it is a fatal error to have a ROUTE-TO
  1057.          statement before the first SCHEDULE statement, or between the
  1058.          previous FILE statement and its following SCHEDULE statement.
  1059.  
  1060.  
  1061.      REDIAL <n>     REDIAL <n>
  1062.  
  1063.          This is recognized as a special case, and is passed through
  1064.          unchanged.  The number given as the redial interval is not checked
  1065.          for validity, and may not be a defined macro.
  1066.  
  1067.  
  1068.      DISPLAY <list>     DISPLAY <list>
  1069.  
  1070.          This causes the network addresses comprising the <list> to be
  1071.          displayed on the screen.
  1072.  
  1073.  
  1074.  
  1075.  
  1076.  
  1077.  
  1078.  
  1079.  
  1080.      SEAdog                   Page 16                        RouteGen
  1081.      IF <condition>     IF <condition>
  1082.      IF NOT <condition>     IF NOT <condition>
  1083.  
  1084.          This is used to make parts of a RouteGen control file conditional.
  1085.          This will only work when you are using a ".FON" file created by
  1086.          XlatList (using the "ROUTE" control statement, q.v.), otherwise
  1087.          the condition is undefined.  The <condition> depends on your own
  1088.          node number, as specified in the "NODE" statement or on the
  1089.          command used to invoke RouteGen.  If you have not defined your own
  1090.          network address, then the results are undefined.
  1091.  
  1092.          The following conditionals are currently defined:
  1093.  
  1094.          IGATE         IGATE          True if you are the inbound gateway for your
  1095.                         network.
  1096.  
  1097.          HOST         HOST           Same as IGATE.  Note that FidoNet hosts are
  1098.                         sensibly equivalent to SEAdog inbound gateways.
  1099.  
  1100.          OGATE         OGATE          True if you are the outbound gateway for your
  1101.                         network.  Not defined in Fido mode.
  1102.  
  1103.          HUB         HUB            True if you are a hub in your network.  Not defined
  1104.                         in Fido mode.
  1105.  
  1106.          LOCAL         LOCAL          True if you are none of the above.
  1107.  
  1108.          NODE <list>         NODE <list>    True if you are a member of <list>, where <list> is
  1109.                         a list of one or more nodes.
  1110.  
  1111.          ANY <list>         ANY <list>     True if the specified list contains any addresses.
  1112.  
  1113.          SEADOG         SEADOG         True if RouteGen is currently in SEAdog mode.
  1114.  
  1115.          FIDO         FIDO           True if RouteGen is currently in Fido mode.
  1116.  
  1117.          Preceding any of these with the keyword NOT reverses the logic of
  1118.          the test.  For example:
  1119.  
  1120.               if not any net-103
  1121.  
  1122.          is true only if there are no nodes in network 103.
  1123.  
  1124.  
  1125.      ELSE [<statement>]     ELSE [<statement>]
  1126.  
  1127.          This signals the converse of a previous IF.  The statement
  1128.          following the word ELSE is optional.  If it is given, then no
  1129.          ENDIF is required.
  1130.  
  1131.  
  1132.      ENDIF     ENDIF
  1133.  
  1134.          This signals the end of a previous IF statement.
  1135.  
  1136.  
  1137.  
  1138.  
  1139.  
  1140.      SEAdog                   Page 17                        RouteGen
  1141.      <anything> [<list>]     <anything> [<list>]
  1142.  
  1143.          Any other statement encountered by RouteGen is written to the
  1144.          output file unchanged, with any macros in <list> expanded.
  1145.  
  1146.          When operating in Fido mode it is a fatal error to have any such
  1147.          statement before the first SCHEDULE statement, or between the
  1148.          previous FILE statement and its following SCHEDULE statement.
  1149.  
  1150.  
  1151.  
  1152.  
  1153.  
  1154.  
  1155.  
  1156.  
  1157.  
  1158.  
  1159.  
  1160.  
  1161.  
  1162.  
  1163.  
  1164.  
  1165.  
  1166.  
  1167.  
  1168.  
  1169.  
  1170.  
  1171.  
  1172.  
  1173.  
  1174.  
  1175.  
  1176.  
  1177.  
  1178.  
  1179.  
  1180.  
  1181.  
  1182.  
  1183.  
  1184.  
  1185.  
  1186.  
  1187.  
  1188.  
  1189.  
  1190.  
  1191.  
  1192.  
  1193.  
  1194.  
  1195.  
  1196.  
  1197.  
  1198.  
  1199.  
  1200.      SEAdog                   Page 18                        RouteGen
  1201.                               RouteGen Conditionals                              RouteGen Conditionals
  1202.  
  1203.      The IF, ELSE, and ENDIF statements all work together pretty much as
  1204.      you'd expect, and may be nested as deeply as you like that memory
  1205.      constraints will allow.
  1206.  
  1207.      Here's an example of the use of conditionals:
  1208.  
  1209.          if host
  1210.               forward-to ournet
  1211.          else if ogate
  1212.               forward-for ournet
  1213.          else if hub
  1214.               if node 100
  1215.                    forward-to 100:199
  1216.               else if node 200
  1217.                    forward-to 100:299
  1218.               else if node 300
  1219.                    forward-to 300:399
  1220.               else if node 400
  1221.                    if any 400:499
  1222.                         forward-to 400:499
  1223.                    endif
  1224.               endif
  1225.          else poll 100
  1226.  
  1227.  
  1228.      The ELSE statement can take any of three basic forms.  Whether or not
  1229.      an ENDIF will be required depends on which form of ELSE is used, as
  1230.      follows:
  1231.  
  1232.       1) ELSE                An ENDIF will be required.
  1233.  
  1234.       2) ELSE IF             An ENDIF will be required, unless another ELSE
  1235.                              clause follows this one.
  1236.  
  1237.       3) ELSE <statement>    An ENDIF is not required.
  1238.  
  1239.  
  1240.      This sounds strange, but with any luck it'll be intuitively obvious.
  1241.  
  1242.  
  1243.  
  1244.  
  1245.  
  1246.  
  1247.  
  1248.  
  1249.  
  1250.  
  1251.  
  1252.  
  1253.  
  1254.  
  1255.  
  1256.  
  1257.  
  1258.  
  1259.  
  1260.      SEAdog                   Page 19                        RouteGen
  1261.                            Sample routing control file                           Sample routing control file
  1262.  
  1263.  
  1264.      Here is an example of a routing control file:
  1265.  
  1266.  
  1267.          node 107/3                              ;Where I'm working from
  1268.          fido                                    ;Only the Fidos need this
  1269.  
  1270.          define nj area-201 area-609 area-215    ;Define our routing areas
  1271.          define li area-516 area-716 area-914
  1272.          define ny area-212 area-315 area-718
  1273.  
  1274.          define nj net-107 except ny li          ;Squeeze out independents
  1275.          define ny net-107 except nj li
  1276.          define li net-107 except nj ny
  1277.  
  1278.          Schedule B                              ;Call nobody
  1279.          Schedule C 16                           ;Upload to outbound host
  1280.               accept-from ny
  1281.               route-to 16 all
  1282.          Schedule D All                          ;National mail hour
  1283.               accept-from ny                     ;In case outbound is down
  1284.          Schedule E 16 50                        ;Download to hubs
  1285.               accept-from all
  1286.               route-to 16 nj
  1287.               route-to 50 li
  1288.               send-only
  1289.          Schedule F ournet                       ;In case a hub is down
  1290.               accept-from all
  1291.               no-route all
  1292.               send-only
  1293.  
  1294.      A more involved routing example should accompany this program and
  1295.      manual.
  1296.  
  1297.  
  1298.  
  1299.  
  1300.  
  1301.  
  1302.  
  1303.  
  1304.  
  1305.  
  1306.  
  1307.  
  1308.  
  1309.  
  1310.  
  1311.  
  1312.  
  1313.  
  1314.  
  1315.  
  1316.  
  1317.  
  1318.  
  1319.  
  1320.      SEAdog                   Page 20                        RouteGen
  1321.                               NODE LIST SIZE LIMITS                              NODE LIST SIZE LIMITS
  1322.  
  1323.  
  1324.  
  1325.      XlatList has no limit on the size of the node list that it can
  1326.      process.  It handles a node list in serial fashion, and can thus
  1327.      properly handle a list of any size.
  1328.  
  1329.                                   ____     RouteGen, on the other hand, does have an upper limit on the size of
  1330.      the node list which it can handle.  By the very nature of what it is
  1331.      doing, it must be able to create and use a table of all of the nodes
  1332.      in the node list.  At this time that table is kept in memory for
  1333.      reasons of speed.  There are no provisions for spooling the table to
  1334.      disk if it grows too large to hold in memory.  Table space is
  1335.      dynamically allocated as it is needed, so there is no defined upper
  1336.      limit.  Instead, it is limited by the total amount of memory which is
  1337.      available when RouteGen is run.  RouteGen will abort with an error
  1338.      message if the node list is too large to process.
  1339.  
  1340.      In addition, as macros are defined they too are held in memory.  It is
  1341.      quite possible for a routing control file of modest length to define
  1342.      macros of such size that they cannot all be held in memory at one
  1343.      time.  RouteGen will abort with an error message if the routing
  1344.      control file is too complex to process.
  1345.  
  1346.  
  1347.      You should try to avoid creating route files that define very large
  1348.      macros.  By this we mean macros which evaluate to a very long list of
  1349.      nodes.  In particular, if your route file contained:
  1350.  
  1351.          define st-louis net-100 1/0 1/2 1/107
  1352.          define outbound 100/10
  1353.          define world all except st-louis
  1354.  
  1355.          schedule c
  1356.            send-to outbound
  1357.            route-to outbound world
  1358.  
  1359.          schedule d
  1360.            send-to world
  1361.            route-to outbound world
  1362.  
  1363.      it may work, but it probably isn't a good idea.  In this particular
  1364.      case, the macro "world" is being defined as a very large list of
  1365.      nodes.  A large list like this has the following disadvantages:
  1366.  
  1367.          1) It requires a lot of memory to define.
  1368.  
  1369.          2) It takes a fair amount of processor time to define.
  1370.  
  1371.          3) It will generate a very large route file, which will consume
  1372.             much disk space.
  1373.  
  1374.          4) It will take longer for your mail server to set up a mail
  1375.             event, since it will have to scan and process a very large
  1376.             route file.
  1377.  
  1378.  
  1379.  
  1380.      SEAdog                   Page 21                        RouteGen
  1381.      Here's a better way to get the same result:
  1382.  
  1383.          define st-louis net-100 1/0 1/2 1/107
  1384.          define outbound 100/10
  1385.  
  1386.          schedule c
  1387.            send-to outbound
  1388.            route-to outbound ALL
  1389.            no-route st-louis
  1390.  
  1391.          schedule d
  1392.            send-to ALL
  1393.            route-to outbound ALL
  1394.            hold st-louis
  1395.  
  1396.      This example uses the keyword "ALL", but "ALL" isn't expanded unless
  1397.      you use the "ALL EXCEPT" construct.  "ALL EXCEPT" is perfectly legal,
  1398.      but as a general rule you should try to avoid using it.
  1399.  
  1400.  
  1401.      If you are using SEAdog, then here's another trick you can use:
  1402.  
  1403.          define st-louis net-100 1/0 1/2 1/107
  1404.          define outbound 100/10
  1405.  
  1406.          schedule c
  1407.            send-to outbound
  1408.            route-to outbound ALL
  1409.            except st-louis
  1410.  
  1411.          schedule d
  1412.            send-to ALL
  1413.            route-to outbound ALL
  1414.            except st-louis
  1415.  
  1416.      In this case RouteGen will treat the EXCEPT as a routing verb, and
  1417.      thus not expand the ALL keywords.  SEAdog, on the other hand, does not
  1418.      read the routing file in a line-by-line fashion, and will thus
  1419.      properly execute the commands.
  1420.  
  1421.  
  1422.  
  1423.  
  1424.  
  1425.  
  1426.  
  1427.  
  1428.  
  1429.  
  1430.  
  1431.  
  1432.  
  1433.  
  1434.  
  1435.  
  1436.  
  1437.  
  1438.  
  1439.  
  1440.      SEAdog                   Page 22                        RouteGen
  1441.